package com.yhj.controller;

import com.yhj.service.MediaPlayer;
import com.yhj.service.impl.FirstBeverage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author yaohj
 * @date 2025年02月12日 15:43
 */
@RestController
@RequestMapping("design")
public class DesignController {
    @Autowired
    private MediaPlayer mediaPlayer;

    @Autowired
    private FirstBeverage firstBeverage;

    //感觉适配器模式很奇怪，就是统一入口，但是老方法和新方法名称不一样，我感觉除非这些方法是第三方不可更改的方法，不然为什么不直接统一方法名称然后直接策略模式
    //适用场景： 感觉是为了新方法兼容老方法且统一入口，可以是三方方法，或者有不少地方的用了老方法（我感觉适配器模式适合用要拓展新方法接口，方法名不同于老方法）
    @RequestMapping("adapter")
    public String adapter(String audioType) {
        mediaPlayer.play(audioType);
        return "ok";
    }

    //模板方法模式，我感觉是一系列的方法放到抽象类种，但是不一样的业务对这些方法的实现是不一样的，但是这些业务都是分别要实现对应方法的（感觉模板模式后面可以跟策略模式结合）
    @RequestMapping("template")
    public String template() {
        firstBeverage.playAll();
        return "ok";
    }
}
